/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.AlunoAux;
import br.com.sgs.auxiliar.CampusAux;
import br.com.sgs.auxiliar.EnderecoAux;
import br.com.sgs.auxiliar.FuncionarioAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Aluno;
import br.com.sgs.entity.Campus;
import br.com.sgs.entity.Funcionario;
import br.com.sgs.fachada.*;
import br.com.sgs.util.DataValue;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

        
             
        
                
/**
 *
 * @author Eric
 */
@ManagedBean(name="funcionarioMB")
@ViewScoped
public class FuncionarioMB implements Serializable {
    
    
    private List<Funcionario> lsfuncionario = new ArrayList<Funcionario>();
    private List<String> lsstatus = new ArrayList<String>();
       
    //instituicao selecionada
    private Funcionario funcionarioselecionado;
    
    //parametro de busca
    private String busca;
    private String senha;
    private String confirmasenha;
    private String senhaatual;
 
    //campos do visualizar
    private String strnome;
    private String stremail;
    private String strrg;
    private String strcpf;
    private String strlogin;
    private String strtelefone;
    private String strcelular;
    private String strinstituicao;
    private String strstatus;
    private Date strdtcriacao;

    /**
     * Creates a new instance of InstituicaoNew
     */
    public FuncionarioMB() {
    }
    
    @PostConstruct
    public void init() {
        try {

            FuncionarioIFachada ifach = new FuncionarioFachada();

            for (DataValue lsd : FuncionarioAux.getStatusLista()) {
                this.getLsstatus().add(lsd.getValue());
            }

            setLsfuncionario(ifach.findFuncionarioByAll("", "", "", null, null, getLsstatus()));

        } catch (Exception e) {
            System.err.println("Erro no init do funcionarioMB");
        }
    }
        
    public void buscar() {
        try {
            
            FuncionarioIFachada ifach = new FuncionarioFachada();
            setLsfuncionario(ifach.findFuncionarioByAll(getBusca(), "", "", null, null, getLsstatus()));

            
        } catch (Exception e) {
            System.err.println("Erron no método buscar");
            e.printStackTrace();
        }
    }
    
    public void visualizar(Funcionario f) {
        try {

            setStrinstituicao(f.getInstituicao().getNome());
            setStrnome(f.getNome());
            setStrlogin(f.getLogin());
            setStremail(f.getEmail());
            setStrrg(f.getRg());
            setStrcpf(f.getCpf());
            strstatus = MessageBundleLoader.getMessage(FuncionarioAux.getStatusLabel(f.getStatus()));
            setStrdtcriacao(f.getDtcriacao());
            setStrtelefone(f.getTelefone());
            setStrcelular(f.getCelular());

        } catch (Exception e) {
            System.err.println("Erro no visualizar");
        }
    }
    
    public void excluir() {
        try {

            IFachada ifach = new Fachada();

            Funcionario funcionario = getFuncionarioselecionado();

            funcionario.setStatus(FuncionarioAux.EXCLUIDO);
            ifach.alterar(funcionario);

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgExcluidoSucesso"), ""));
            atualizarTabela();

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("msgexclusaoErro"), ""));
        }

    }

    public String editar() {
        try {
           return "FUNCIONARIOEDIT";
        } catch (Exception e) {
           return null;
        }
    }
    
    public void atualizarTabela() {
        try {

            FuncionarioIFachada ifach = new FuncionarioFachada();
            setLsfuncionario(ifach.findFuncionarioByAll("", "", "", null, null, getLsstatus()));

        } catch (Exception e) {
            System.err.println("Erro no metodo atualizarTabela");
        }
    }
    
    public void selecionarRegistro(Funcionario funcionario) {
        try {

            setFuncionarioselecionado(funcionario);

        } catch (Exception e) {
            System.err.println("Erro no metodo selecionarRegistro");
        }

    }
    
    public void alterarSenha() {
        try {
            
            if(getSenha().equals(getConfirmasenha())){
                
                FuncionarioIFachada ifach = new FuncionarioFachada();
                getFuncionarioselecionado().setSenha(getSenha());
                
                ifach.alterar(getFuncionarioselecionado());
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgSenhaAlterada"), ""));
                
            } else {
                 FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, MessageBundleLoader.getMessage("msgSenhaNaoConfere"), ""));
            }
        } catch (Exception e) {
            System.err.println("Erro no alterar senha");
            e.printStackTrace();
        }
    }
    
    public String strStatusLabel(int st) {
        return MessageBundleLoader.getMessage(FuncionarioAux.getStatusLabel(st));
    }

    /**
     * @return the lsstatus
     */
    public List<String> getLsstatus() {
        return lsstatus;
    }

    /**
     * @param lsstatus the lsstatus to set
     */
    public void setLsstatus(List<String> lsstatus) {
        this.lsstatus = lsstatus;
    }

    /**
     * @return the funcionarioselecionado
     */
    public Funcionario getFuncionarioselecionado() {
        return funcionarioselecionado;
    }

    /**
     * @param funcionarioselecionado the funcionarioselecionado to set
     */
    public void setFuncionarioselecionado(Funcionario funcionarioselecionado) {
        this.funcionarioselecionado = funcionarioselecionado;
    }

    /**
     * @return the busca
     */
    public String getBusca() {
        return busca;
    }

    /**
     * @param busca the busca to set
     */
    public void setBusca(String busca) {
        this.busca = busca;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {
        this.senha = senha;
    }

    /**
     * @return the confirmasenha
     */
    public String getConfirmasenha() {
        return confirmasenha;
    }

    /**
     * @param confirmasenha the confirmasenha to set
     */
    public void setConfirmasenha(String confirmasenha) {
        this.confirmasenha = confirmasenha;
    }

    /**
     * @return the senhaatual
     */
    public String getSenhaatual() {
        return senhaatual;
    }

    /**
     * @param senhaatual the senhaatual to set
     */
    public void setSenhaatual(String senhaatual) {
        this.senhaatual = senhaatual;
    }

    /**
     * @return the strnome
     */
    public String getStrnome() {
        return strnome;
    }

    /**
     * @param strnome the strnome to set
     */
    public void setStrnome(String strnome) {
        this.strnome = strnome;
    }

    /**
     * @return the stremail
     */
    public String getStremail() {
        return stremail;
    }

    /**
     * @param stremail the stremail to set
     */
    public void setStremail(String stremail) {
        this.stremail = stremail;
    }

    /**
     * @return the strrg
     */
    public String getStrrg() {
        return strrg;
    }

    /**
     * @param strrg the strrg to set
     */
    public void setStrrg(String strrg) {
        this.strrg = strrg;
    }

    /**
     * @return the strcpf
     */
    public String getStrcpf() {
        return strcpf;
    }

    /**
     * @param strcpf the strcpf to set
     */
    public void setStrcpf(String strcpf) {
        this.strcpf = strcpf;
    }

    /**
     * @return the strlogin
     */
    public String getStrlogin() {
        return strlogin;
    }

    /**
     * @param strlogin the strlogin to set
     */
    public void setStrlogin(String strlogin) {
        this.strlogin = strlogin;
    }

    /**
     * @return the strtelefone
     */
    public String getStrtelefone() {
        return strtelefone;
    }

    /**
     * @param strtelefone the strtelefone to set
     */
    public void setStrtelefone(String strtelefone) {
        this.strtelefone = strtelefone;
    }

    /**
     * @return the strcelular
     */
    public String getStrcelular() {
        return strcelular;
    }

    /**
     * @param strcelular the strcelular to set
     */
    public void setStrcelular(String strcelular) {
        this.strcelular = strcelular;
    }

    /**
     * @return the strinstituicao
     */
    public String getStrinstituicao() {
        return strinstituicao;
    }

    /**
     * @param strinstituicao the strinstituicao to set
     */
    public void setStrinstituicao(String strinstituicao) {
        this.strinstituicao = strinstituicao;
    }

    /**
     * @return the strdtcriacao
     */
    public Date getStrdtcriacao() {
        return strdtcriacao;
    }

    /**
     * @param strdtcriacao the strdtcriacao to set
     */
    public void setStrdtcriacao(Date strdtcriacao) {
        this.strdtcriacao = strdtcriacao;
    }

    /**
     * @return the lsfuncionario
     */
    public List<Funcionario> getLsfuncionario() {
        return lsfuncionario;
    }

    /**
     * @param lsfuncionario the lsfuncionario to set
     */
    public void setLsfuncionario(List<Funcionario> lsfuncionario) {
        this.lsfuncionario = lsfuncionario;
    }

    /**
     * @return the strstatus
     */
    public String getStrstatus() {
        return strstatus;
    }

    /**
     * @param strstatus the strstatus to set
     */
    public void setStrstatus(String strstatus) {
        this.strstatus = strstatus;
    }
}
